//
//  ServerTimeTool.swift
//  ServerTime
//
//  Created by 薛永伟 on 2019/1/4.
//  Copyright © 2019年 薛永伟. All rights reserved.
//

import Foundation

/// 服务器时间同步工具
struct YRServerTimeSynchronizer {
    
    /// 当前服务器时间
    static var currenTime:Int{
        let nowRuntime = now() - boottime()
        return serverTime + (nowRuntime - synRunTime)
    }
    
    /// 同步时系统运行时长
    private static var synRunTime:Int = now() - boottime()
    
    /// 同步时服务器时间
    private static var serverTime:Int = Int(Date().timeIntervalSince1970)
    
    /// 设备当前时钟时间
    private static func now() -> Int {
        var now =  timeval()
        var tz = timezone()
        gettimeofday(&now, &tz)
        return now.tv_sec
    }
    
    /// 设备重启时间
    private static func boottime() -> Int {
        
        var mid = [CTL_KERN, KERN_BOOTTIME]
        var boottime = timeval()
        var size = MemoryLayout.size(ofValue: boottime)
        
        if sysctl(&mid, 2, &boottime, &size, nil, 0) != -1 {
            return boottime.tv_sec
        }
        return 0
    }
    
    /// 同步服务器时间
    static func synServerTime() {
        
        // 接口获取服务器时间处理
//        Service.Common.getTime(sucess: { (response) in
//            if response.status == 1 {
//                let serverTime = response.data.intValue
//                self.serverTime = serverTime
//                self.synRunTime = now() - boottime()           // 当前设备运行时间
//
//            }
//        }) { (error) in
//
//        }
        
//       return Date()
        
    }
}
